let readline = require("readline-sync");

// 获取指定范围的随机数函数
function randomNumber(min, max) {
    return parseInt(Math.random() * (max - min + 1) + min);
}

function main() {
    let mainFlag = true;
    while (mainFlag) {
        console.log("请选择功能：1.单人模式 2.双人模式 3.游戏介绍 4.退出游戏");
        let mainChoice = readline.question("") * 1;
        switch (mainChoice) {
            case 1:
                console.log("欢迎进入单人模式！");
                let playerCount = 0; //记录玩家比分
                let systemCount = 0; //记录系统比分
                // 单人模式的游戏循环
                let soloFlag = true;
                while (soloFlag) {
                    let playerNum = 0; //表示玩家总点数
                    // 发牌循环
                    let cardsFlag = true;
                    while (cardsFlag) {
                        console.log("是否继续发牌？（y/n）");
                        let soloChoice = readline.question("");
                        if (soloChoice == "y" || soloChoice == "Y") {
                            let num = randomNumber(1, 10);
                            console.log(`本轮玩家获取的点数是：${num}`);
                            playerNum += num;
                            console.log(`玩家的总点数是：${playerNum}`);
                            if (playerNum > 21) {
                                console.log("玩家点数大于21点，玩家本轮游戏失败！");
                                playerNum = 0; //玩家点数清零，方便后续和系统点数进行比较
                                break;
                            }
                        } else {
                            cardsFlag = false; //关闭循环开关，结束循环s
                        }
                    }
                    // 随机生成系统的点数（16-21之间）
                    let systemNum = randomNumber(16, 21);
                    console.log(`玩家点数：${playerNum} VS 系统点数：${systemNum}`);

                    // 玩家的点数和系统生成的点数进行比较
                    if (playerNum > systemNum) {
                        console.log("玩家本轮获胜！");
                        playerCount++; //玩家比分+1
                    } else if (playerNum < systemNum) {
                        console.log("系统本轮获胜！");
                        systemCount++; //系统比分+1

                    } else {
                        console.log("平局！");
                    }

                    console.log(`玩家比分：${playerCount} VS 系统比分：${systemCount}`);

                    // 循环玩家是否继续游戏
                    console.log("是否继续游戏？（y/n）");
                    let playerChoice = readline.question("");
                    if (playerChoice == "n" || playerChoice == "N") {
                        soloFlag = false; //关闭循环开关
                    }


                }


                break;
            case 2:
                console.log("欢迎进入双人模式！");
                let player1Count = 0; //记录玩家1比分
                let player2Count = 0; //记录玩家2比分
                // 单人模式的游戏循环
                let doubleFlag = true;
                while (doubleFlag) {
                    let player1Num = 0; //表示玩家1总点数
                    let player2Num = 0; //表示玩家2总点数
                    // 发牌循环
                    let cardsFlag = true;
                    let player1Flag = true; //表示玩家1发牌开关
                    let player2Flag = true; //表示玩家2发牌开关
                    while (cardsFlag) {
                        // 给玩家1发牌
                        if (player1Flag) {
                            console.log("玩家1是否继续发牌？（y/n）");
                            let player1Choice = readline.question("");
                            if (player1Choice == "y" || player1Choice == "Y") {
                                let num = randomNumber(1, 10);
                                console.log(`本轮玩家1获取的点数是：${num}`);
                                player1Num += num;
                                console.log(`玩家1的总点数是：${player1Num}`);
                                if (player1Num > 21) {
                                    console.log("玩家1点数大于21点，玩家1本轮游戏失败！");
                                    player1Num = 0; //玩家1点数清零，方便后续和玩家2点数进行比较
                                    break;
                                }
                            } else {
                                player1Flag = false; //关闭玩家1发牌开关

                            }


                        }

                        // 给玩家2发牌
                        if (player2Flag) {
                            console.log("玩家2是否继续发牌？（y/n）");
                            let player2Choice = readline.question("");
                            if (player2Choice == "y" || player2Choice == "Y") {
                                let num = randomNumber(1, 10);
                                console.log(`本轮玩家2获取的点数是：${num}`);
                                player2Num += num;
                                console.log(`玩家2的总点数是：${player2Num}`);
                                if (player2Num > 21) {
                                    console.log("玩家2点数大于21点，玩家2本轮游戏失败！");
                                    player2Num = 0; //玩家2点数清零，方便后续和玩家1点数进行比较
                                    break;
                                }
                            } else {
                                player2Flag=false;//关闭玩家2发牌开关
                            }

                        }

                        // 当两个玩家都不发牌的时候，结束发牌循环
                        if(player1Flag==false && player2Flag==false){
                            cardsFlag=false;
                        }
                    }
                    console.log(`玩家1点数：${player1Num} VS 玩家2点数：${player2Num}`);

                    // 玩家1的点数和玩家2的点数进行比较
                    if (player1Num > player2Num) {
                        console.log("玩家1本轮获胜！");
                        player1Count++; //玩家1比分+1
                    } else if (player1Num < player2Num) {
                        console.log("玩家2本轮获胜！");
                        player2Count++; //玩家2比分+1

                    } else {
                        console.log("平局！");
                    }

                    console.log(`玩家1比分：${player1Count} VS 玩家2比分：${player2Count}`);

                    // 循环玩家是否继续游戏
                    console.log("是否继续游戏？（y/n）");
                    let playerChoice = readline.question("");
                    if (playerChoice == "n" || playerChoice == "N") {
                        doubleFlag = false; //关闭循环开关
                    }


                }

                break;
            case 3:
                console.log("游戏介绍。。。");
                break;
            case 4:
                console.log("退出游戏，欢迎下次再来！");
                mainFlag = false; //关闭循环开关
                // return;//强制结束整个函数
                break;
            default:
                console.log("没有该选项，请重新选择！");
        }
    }

}
main();